我們資料庫課程講師是來自於曹祖聖老師
我記得上課的時候是講義搭配一堆的題目練習,每天一下課就會有排山倒海而來的一堆題目嚇死我了
例如這樣上面還有一堆題目,非常充分的練習,我想我可能作夢都在不斷的select from where一直查資料
然後有時候題目解答出來之後,也不知道這樣是不是正確的,只要問一下大家答案,如果超過三個以上答案一樣大概就是對的吧哈哈哈
隔天上課老師會在幫我們解一些比較難的題目,然後老師三兩下鍵盤搭拉搭拉答案就出來了,老師果然就是老師
雖然學了很多語法,但常用的還是那幾個,於是想講一個範例覺得蠻特別的
首先我的資料長這樣
SELECT ca.CategoryName,od.Quantity,YEAR(o.OrderDate) AS orderyear
FROM Categories AS ca
INNER JOIN Products AS p ON p.CategoryID=ca.CategoryID
INNER JOIN Order Details AS od ON od.ProductID=p.ProductID
INNER JOIN Orders AS o ON o.OrderID=od.OrderID
並且假設我要把每個類別的資料按照年份加總起來,將資料轉為橫向處理可以怎麼做?
可以利用PIVOT來扭轉資料,面對數筆有意義資料要匯總成橫式資料時,讓資料呈現上更貼近人性。
WITH t1 AS
(
SELECT ca.CategoryName,od.Quantity,YEAR(o.OrderDate) AS orderyear
FROM Categories AS ca
INNER JOIN Products AS p ON p.CategoryID=ca.CategoryID
INNER JOIN [Order Details] AS od ON od.ProductID=p.ProductID
INNER JOIN Orders AS o ON o.OrderID=od.OrderID
)
SELECT CategoryName,[1996],[1997],[1998]
FROM t1
PIVOT(
SUM(Quantity) FOR orderyear in ([1996],[1997],[1998])
)AS pvt